Partitioning of hardware platform enables the use of multiple execution domains within a single hardware platform. Various types of partitioning exist including, for example, firm partitioning as well as hard partitioning. In firm partitioning, portions of an input/output (I/O) subsystem may be shared among execution domains. One type of firm partitioning is referred to as embedded partitioning. Embedded partitioning is a scheme of partitioning a multi core system, which allows an embedded partition to provide various value added capabilities to the operating system(s) running on non-embedded partitions, referred to herein as legacy partitions.
Embedded partitioning differs from server partitioning since server partitioning dedicates hardware resources to partitions. Conversely, embedded partitioning requires that parts of the platform are shared among partitions. For example, embedded partitions may run on different processor cores and access different portions of dynamic random access memory (DRAM), but may share portions of the I/O subsystem. One difference between embedded partitioning and firm partitioning is that embedded partitioning may run modified operating systems (OS) that are partitioning aware, whereas firm partitioning is limited to running a legacy OS.
A virtual machine architecture logically partitions a physical machine, such that the underlying hardware of the machine is time-shared and appears as one or more independently operating virtual machines (VMs.) A virtual machine monitor (VMM) creates the VM and runs on a computer to facilitate, for other software, the abstraction of one or more VMs. Each VM may function as a self-contained platform, running its own operating system (OS) and application software. The software running in a VM is collectively referred to herein as guest software.
The guest software expects to run as if it were running on a dedicated computer rather than a VM. That is, the guest software expects to control various events and have access to hardware resources on a computer (e.g., physical machine.) The hardware resources of a physical machine may include one or more processors, resources resident on the processor (e.g. control registers cashes and others), memory (instructions residing in memory, e.g. descriptive tables,) and other resources (e.g. peripheral (I/O) devices) that reside in the physical machine.
As described herein execution domains may refer to the various partitions of a hardware platform, as well as the various virtual machines of hardware platform or other like execution domain. The various execution domains running on the single hardware platform may each run a separate OS that attempts to enumerate a device tree and configure the bridges, interconnects and end-point devices that are discovered during an interconnect scan. If each execution domain independently configures the device tree and is without knowledge of other execution domains, conflicting configurations are possible. Hence, the sharing of configuration and enumeration of peripheral end-point devices between multiple execution domains may result in conflicting configurations. Conflicting configurations can render some or all peripheral end-point devices/functions inaccessible, or cause such devices/functions to operate in an unintended matter.